package com.zrrd.zuo.class01;

/**
 * @author ywb
 * @Description:
 * @date 2023/3/14 22:03
 */
public class EasySort {
    public static void swap(int[] arr ,int i,int j){
        int tmp = arr[j];
        arr[j] = arr[i];
        arr[i] = tmp;
    }
    public static void print(int[] arr){
        for (int i : arr) {
            System.out.print(i);
            System.out.print(" ");
        }
        System.out.println();
    }
    //选择 小的向前 一次确定最小
    public static void selecrtSort(int[] arr){
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            int minindex = i;
            for (int j = i + 1; j < arr.length; j++) {
                minindex = arr[j] < arr[minindex] ? j : minindex;
            }
            swap(arr,i,minindex);
        }
    }
    //冒泡 大的向后 一次确定最大
    public static void bubbleSort(int[] arr){
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int end = arr.length - 1; end >= 0; end--) {
            for(int second = 1;second <= end ;second++){
                if(arr[second - 1] > arr[second]){
                    swap(arr,second - 1,second);
                }
            }
        }
    }
    //插入 拿牌插入 确定手牌有序
    public static void insertSort(int[] arr){
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int end = 1; end < arr.length; end++) {
            int index = end;
            while (index - 1 >= 0 && arr[index - 1] > arr[index]){
                swap(arr,index,index - 1);
                index--;
            }
        }
    }
    public static void insertSort1(int[] arr){
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int end = 1; end < arr.length; end++) {
           for (int pre = end - 1; pre >= 0 && arr[pre] > arr[pre + 1];pre--){
                swap(arr,pre,pre + 1);
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1,9,5,7,3,6,34,5,5,3,5,8};
        print(arr);
        insertSort1(arr);
        print(arr);
    }
}
